package haoyou.csnf.manager.module.pm.controller.admin.employeeinfo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import haoyou.csnf.manager.framework.excel.core.annotations.DictFormat;
import haoyou.csnf.manager.framework.excel.core.convert.DictConvert;

@Schema(description = "管理后台 - 职工信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class EmployeeInfoRespVO {

    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "7555")
    @ExcelProperty("主键ID")
    private Long id;

    @Schema(description = "所属部门", example = "8595")
    @ExcelProperty("所属部门")
    private Integer depId;

    @Schema(description = "职位序列", example = "13746")
    @ExcelProperty("职位序列")
    private Integer seqId;

    @Schema(description = "职位", example = "1")
    @ExcelProperty("职位")
    private Integer posId;

    @Schema(description = "类型", example = "2")
    @ExcelProperty(value = "类型", converter = DictConvert.class)
    @DictFormat("emp_type") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String empType;

    @Schema(description = "姓名", example = "李四")
    @ExcelProperty("姓名")
    private String empName;

    @Schema(description = "工号")
    @ExcelProperty("工号")
    private String empNo;

    @Schema(description = "手机")
    @ExcelProperty("手机")
    private String mobile;

    @Schema(description = "性别")
    @ExcelProperty(value = "性别", converter = DictConvert.class)
    @DictFormat("system_user_sex") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String gender;

    @Schema(description = "生日")
    @ExcelProperty("生日")
    private LocalDateTime birthDate;

    @Schema(description = "身份证号")
    @ExcelProperty("身份证号")
    private String idNo;

    @Schema(description = "政治面貌", example = "2")
    @ExcelProperty("政治面貌")
    private String politicalStatus;

    @Schema(description = "民族")
    @ExcelProperty("民族")
    private String ethnicity;

    @Schema(description = "婚姻状况", example = "1")
    @ExcelProperty(value = "婚姻状况", converter = DictConvert.class)
    @DictFormat("marital_status") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String maritalStatus;

    @Schema(description = "籍贯")
    @ExcelProperty("籍贯")
    private String hometown;

    @Schema(description = "英语等级", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("英语等级")
    private String englishLevel;

    @Schema(description = "校外工作起始日期")
    @ExcelProperty("校外工作起始日期")
    private LocalDateTime externalDate;

    @Schema(description = "学院入职时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("学院入职时间")
    private LocalDateTime collegeEntryDate;

    @Schema(description = "身份证地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("身份证地址")
    private String idAddress;

    @Schema(description = "现家庭地址", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("现家庭地址")
    private String homeAddress;

    @Schema(description = "教师资格证")
    @ExcelProperty(value = "教师资格证", converter = DictConvert.class)
    @DictFormat("teacher_cert") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String teacherCert;

    @Schema(description = "资格证编号")
    @ExcelProperty("资格证编号")
    private String teacherCertNo;

    @Schema(description = "银行卡号")
    @ExcelProperty("银行卡号")
    private String bankCardNumber;

    @Schema(description = "紧急联系人")
    @ExcelProperty("紧急联系人")
    private String emergencyContact;

    @Schema(description = "与紧急联系人关系")
    @ExcelProperty("与紧急联系人关系")
    private String contactRelationship;

    @Schema(description = "紧急联系人电话")
    @ExcelProperty("紧急联系人电话")
    private String emergencyPhone;

    @Schema(description = "身份标记")
    @ExcelProperty("身份标记")
    private String typeFlag;

    @Schema(description = "状态标记")
    @ExcelProperty("状态标记")
    private String statusFlag;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "备注信息")
    @ExcelProperty("备注信息")
    private String remarks;

}